﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Evolution.Common;
using RamaSoft.Oficina;
using ComponentFactory.Krypton.Toolkit;

namespace TECassist
{
    public partial class ClienteHisto : KryptonForm
    {
        public static int códCliente;
        string[] tabTipo = new string[] { "dinheiro", "cheque", "cartão", "notinha", "boleto" };
        Database myDBase;

        public ClienteHisto(Database myDBase)
        {
            InitializeComponent();
            this.myDBase = myDBase;
        }

        private void Form_Load(object sender, EventArgs e)
        {
            Cliente regCli = new Cliente(myDBase);
            regCli.Código = códCliente;
            int dbRet = regCli.Obter();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft\n"
                    + "referência: " + this.Name + "Cliente\n" + regCli.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            txNome.Text = regCli.Nome.Trim();
            txTelefone.Text = regCli.Telefone.Trim();
            if (regCli.Telefone2.Trim() != "NC") txTelefone2.Text = regCli.Telefone2.Trim();
            if (regCli.Endereço.Trim() != "NC") txEndereço.Text = regCli.Endereço.Trim() + " (" 
                + regCli.Setor.Trim() + ")";
            Ordens rolOrdens = new Ordens(myDBase);
            rolOrdens.CódCliente = códCliente;
            dbRet = rolOrdens.ListaCliente();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft\n"
                    + "referência: " + this.Name + "Ordens\n" + rolOrdens.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            for (int ix = 0; ix < rolOrdens.Items.Count; ix++)
            {
                Histos rolHisto = new Histos(myDBase);
                rolHisto.NúmOrdem = rolOrdens.Items[ix].Número;
                dbRet = rolHisto.Lista();
                if (dbRet != 0)
                {
                    MessageBox.Show("Favor avisar a RamaSoft\n"
                        + "referência: " + this.Name + "Histo\n" + rolHisto.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                double valHisto = 0;
                for (int ht = 0; ht < rolHisto.Items.Count; ht++)
                { valHisto = valHisto + rolHisto.Items[ht].Valor; }
                Peças rolPeças = new Peças(myDBase);
                rolPeças.NúmOrdem = rolOrdens.Items[ix].Número;
                dbRet = rolPeças.Lista();
                if (dbRet != 0)
                {
                    MessageBox.Show("Favor avisar a RamaSoft\n"
                        + "referência: " + this.Name + "Peças\n" + rolPeças.MsgErro,
                        "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                double valPeças = 0;
                for (int pç = 0; pç < rolPeças.Items.Count; pç++)
                {
                    Produto regProd = new Produto(myDBase);
                    regProd.Código = rolPeças.Items[pç].Produto;
                    dbRet = regProd.Obter();
                    if (dbRet != 0)
                    {
                        MessageBox.Show("Favor avisar a RamaSoft\n"
                            + "referência: " + this.Name + "Prod\n" + regProd.MsgErro,
                            "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    valPeças = valPeças + (regProd.Venda * rolPeças.Items[pç].Quantidade);
                }
                double valTotal = valPeças + valHisto;
                string fechto = "";
                if (rolOrdens.Items[ix].Ativa != "S") fechto = rolOrdens.Items[ix].Fechto.ToString("dd/MM/yyyy");
                listaOrdens.Rows.Add(rolOrdens.Items[ix].Data.ToString("dd/MM/yyyy"), fechto,
                    rolOrdens.Items[ix].Produto.Trim(), valHisto.ToString("##,##0.00"),
                    valPeças.ToString("##,##0.00"), valTotal.ToString("##,##0.00"));  
            }
            if (rolOrdens.Items.Count > 0) listaOrdens.CurrentRow.Selected = false;  
            Créditos rolCréd = new Créditos(myDBase);
            rolCréd.Cliente = códCliente;
            dbRet = rolCréd.Lista();
            if (dbRet != 0)
            {
                MessageBox.Show("Favor avisar a RamaSoft\n"
                    + "referência: " + this.Name + "Créd\n" + rolCréd.MsgErro,
                    "Erro no acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            for (int dv = 0; dv < rolCréd.Items.Count; dv++)
            {
                listaPends.Rows.Add(rolCréd.Items[dv].Vencto.ToString("dd/MM/yyyy"),
                    tabTipo[rolCréd.Items[dv].Tipo], rolCréd.Items[dv].Valor.ToString("##,##0.00"));
            }
            if (rolCréd.Items.Count > 0) listaPends.CurrentRow.Selected = false; 
        }
    }
}
